In computer science, a virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own operating system (guest OS) and software applications (processes). Typically, a virtual machine manager (VMM) manages allocation and virtualization of computer resources and performs context switching, as may be necessary, to cycle between various VMs.
A host machine (e.g., computer or server) is typically enabled to simultaneously run multiple VMs, where each VM may be used by a remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including guest operating systems. The VMM virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest operating system or the remote client that uses the VM.
Recently, solutions providing centralized hosting for VMs that run (virtual) desktops have been developed. Such solutions consist of centralized servers that are partitioned into multiple VMs that host the virtual desktops, thereby providing a desktop for each user. The centralized hosting provides the manageability of sever-based computing, while the dedicated environment provides the flexibility and compatibility with applications that a desktop enables. In general, VMs therefore enable remote access to a host or server computer by a remote client computer, which mimics or reconstructs the events taking place on the host computer.
However, one problem that arises with the centralized hosting solution for VMs is excessive power consumption. Currently, centralized data centers attempt to save power in a non-virtualization environment by using several power management mechanisms and policies to reduce power. For example, a data center may selectively switch off computing machines, or part of the computing machines, so that the data center is consuming less power overall. Some examples of existing power management mechanisms and/or policies include shutting off an operating system (OS), placing the OS in a low power consumption mode, placing the OS in a hibernation mode, placing the OS in a suspend mode, selectively shutting down a system display, system networking component, reducing a frequency of an operating CPU, and so on.
However, with a virtualized system, these currently-existing power management mechanisms and policies are not effective in the VM hosting environment. The current power management mechanisms and policies cannot be used because, from the host view, each VM is a component that is always working. It becomes practically impossible to use any prior art power management method to reduce power, as the host needs computing power for the working VMs.
In addition, another problem associated with currently-existing power management mechanisms as applied to a VM hosting environment is that individual users of VMs in the VM hosting environment may maintain control over the power management mechanisms and policies. For example, a user of a VM is able to set time limits for when the system will implement a screen saver, go into hibernate mode, shut off, and so on. In such a case, a user of a VM can effectively override the power management mechanisms and policies by setting unrealistic limits for power saving policies to be implemented, thereby nullifying their effects. Therefore, a mechanism to manage power in a VM system that is beyond the scope of end user influence would be beneficial.